importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_handlebars.js
//@include lib_sol.common.Template.js
//@include lib_sol.common.ObjectFormatter.js
//@include lib_sol.common.ix.FunctionBase.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.function.CreateFromTemplate" });
/**
* Renders a template string or template document
*
* # As IX function call:
* Loads a template from the repository, applys the data of a given sord and
* saves the result as a new document into the repository.
*
* sol.common.IxUtils.execute("RF_sol_common_functions_CreateFromTemplate", {
* templateObjId: "111",
* objId: "222",
* saveToRepoConfig: { parentId: "ARCPATH:/Test", "name": "FilledTemplate1" }
* });
*
* @author MW, ELO Digital Office GmbH
* @version 1.0
*
* @eloix
* @requires sol.Logger
* @requires sol.common.JsonUtils
* @requires sol.common.ix.RfUtils
* @requires sol.common.ix.FunctionBase
*
*/
sol.define("sol.common.ix.functions.CreateFromTemplate", {
extend: "sol.common.ix.FunctionBase",
/**
* @cfg {String} templateObjId (required)
* Object ID of the template
*/
/**
* @cfg {String} templateString (required)
* String that contains placeholders
*/
initialize: function (config) {
var me = this;
me.$super("sol.Base", "initialize", [config]);
},
/**
* Fills the template
* @return {Object}
* @return {String} return.result Result
*/
process: function () {
var me = this,
json = sol.common.JsonUtils,
template, result;
if (!me.templateObjId && !me.templateString) {
throw "Template object ID or template string must be set.";
}
template = sol.create("sol.common.Template", {});
if (me.templateObjId) {
template.load(me.templateObjId);
} else {
template.setSource(me.templateString);
}
if (me.objId) {
template.applySord(me.objId);
} else {
template.apply(me.data);
}
result = template.getResult();
if (me.saveToRepoConfig) {
return json.stringifyAll(me.saveResult(result, me.saveToRepoConfig));
} else {
return json.stringifyAll({ result: result });
}
},
saveResult: function (result, saveToRepoConfig) {
var objId;
saveToRepoConfig = saveToRepoConfig || {};
saveToRepoConfig.ext = saveToRepoConfig.ext || ".txt";
saveToRepoConfig.file = java.io.File.createTempFile("Template_", saveToRepoConfig.ext);
Packages.org.apache.commons.io.FileUtils.writeStringToFile(saveToRepoConfig.file, result, "UTF-8");
objId = sol.common.RepoUtils.saveToRepo(saveToRepoConfig);
return { objId: objId };
}
});
/**
* @member sol.common.ix.functions.CreateFromTemplate
* @method RF_sol_common_functions_CreateFromTemplate
* @static
* @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName
*/
function RF_sol_common_functions_CreateFromTemplate(iXSEContext, args) {
logger.enter("RF_sol_common_functions_CreateFromTemplate", args);
var params, module, result;
params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args);
module = sol.create("sol.common.ix.functions.CreateFromTemplate", params);
result = module.process();
logger.exit("RF_sol_common_functions_CreateFromTemplate");
return result;
}